home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 16 / AMIGAplus Sonderheft 16 (1998)(ICP)(DE)[!].iso / pd / anwendungen / rtgmaster_dev / demos / flame / flameasm.a < prev    next >
Text File  |  1996-02-11  |  2KB  |  150 lines

  1.     SECTION DATA,DATA
  2.     XREF _scrn
  3.  
  4.     SECTION CODE,CODE
  5.     XDEF _CopyFrame
  6.     XDEF _CopyFrame2
  7.     XDEF _GenFrame
  8.     XDEF _MouseButton
  9.     XDEF _DrawMeter
  10.  
  11. _DrawMeter:
  12.     cmp.l   #0,d0
  13.     bne     dm_do
  14.     rts
  15. dm_do:
  16.     cmp.l   #100,d0
  17.     blt     dm_really
  18.     rts
  19. dm_really:
  20.     move.l  d1,-(sp)
  21.     beq     dm_end
  22.     move.l  #200,d1
  23. dm_loop:
  24.     move.w  d1,(a0)+
  25.     dbra    d0,dm_loop
  26. dm_end:
  27.     move.l  (sp)+,d1
  28.     rts
  29.  
  30.  
  31.  
  32. _MouseButton:
  33.     btst    #6,$bfe001  ; Ugly direct hardware hit!!!
  34.     beq     mb_set
  35.     moveq   #0,d0
  36.     bra     mb_exit
  37. mb_set:
  38.     moveq   #1,d0
  39. mb_exit:
  40.     rts
  41.  
  42. _CopyFrame:
  43.     movem.l a0-a5/d2-d4,-(sp)
  44.     move.l  d0,d3
  45.     lea     _scrn,a1
  46.     move.w  #59,d0
  47.     moveq   #0,d1
  48.     moveq   #0,d4
  49. cf1:
  50.     move.w  #79,d1
  51.     move.l  a0,a2
  52.     move.l  a2,a3
  53.     add.l   d3,a3
  54.     move.l  a3,a4
  55.     add.l   d3,a4
  56.     move.l  a4,a5
  57.     add.l   d3,a5
  58.     move.l  a5,a0
  59.     add.l   d3,a0
  60. cf2:
  61.     moveq   #0,d2
  62.     moveq   #0,d4
  63.     move.b  (a1)+,d2
  64.     move.b  d2,d4
  65.     lsl.w   #8,d4
  66.     or.w    d4,d2
  67.     move.w  d2,(a2)+
  68.     move.w  d2,(a2)+
  69.     move.w  d2,(a3)+
  70.     move.w  d2,(a3)+
  71.     move.w  d2,(a4)+
  72.     move.w  d2,(a4)+
  73.     move.w  d2,(a5)+
  74.     move.w  d2,(a5)+
  75.  
  76.     dbra    d1,cf2
  77.     dbra    d0,cf1
  78.  
  79.     movem.l (sp)+,a0-a5/d2-d4
  80.  
  81.     rts
  82.  
  83. _GenFrame:
  84.     movem.l  a0/a1/d0/d1/d2,-(sp)
  85.     lea     _scrn,a0
  86.     move.l  #5119,d0
  87.  
  88. gf1:
  89.     move.l  a0,a1
  90.     moveq   #0,d1
  91.     moveq   #0,d2
  92.     add.l   #79,a1
  93.     move.b   (a1),d2
  94.     add.l   d2,d1
  95.     add.l   #2,a1
  96.     move.b   (a1),d2
  97.     add.l   d2,d1
  98.     add.l   #78,a1
  99.     move.b   (a1),d2
  100.     add.l   d2,d1
  101.     addq    #1,a1
  102.     move.b   (a1),d2
  103.     add.l   d2,d1
  104.     addq    #1,a1
  105.     move.b   (a1),d2
  106.     add.l   d2,d1
  107.     divu    #5,d1
  108.     cmp.w   #3,d1
  109.     ble     gf2
  110.     sub.b   #2,d1
  111. gf2:
  112.     move.b  d1,(a0)+
  113. gfnext:
  114.     dbra    d0,gf1
  115. gfx:
  116.     movem.l  (sp)+,a0/a1/d0/d1/d2
  117.     rts
  118.  
  119. _CopyFrame2:
  120.     movem.l a0-a5/d2-d4,-(sp)
  121.     move.l  d0,d3
  122.     lea     _scrn,a1
  123.     move.w  #59,d0
  124.     moveq   #0,d1
  125.     moveq   #0,d4
  126. cf21:
  127.     move.w  #79,d1
  128.     move.l  a0,a2
  129.     move.l  a2,a3
  130.     add.l   d3,a3
  131.     move.l  a3,a0
  132.     add.l   d3,a0
  133. cf22:
  134.     moveq   #0,d2
  135.     moveq   #0,d4
  136.     move.b  (a1)+,d2
  137.     move.b  d2,d4
  138.     lsl.w   #8,d4
  139.     or.w    d4,d2
  140.     move.w  d2,(a2)+
  141.     move.w  d2,(a3)+
  142.  
  143.     dbra    d1,cf22
  144.     dbra    d0,cf21
  145.  
  146.     movem.l (sp)+,a0-a5/d2-d4
  147.  
  148.     rts
  149.         END
  150.